Object data documents are a convenient and ubiquitous means of transporting objects. In an object-oriented (OO) programming paradigm a data model is created which represents the class structures and the relationships between these structures. The object data documents in this type of model represent individual instances of these classes. Object data documents typically consist of attribute-value pairs, the attribute specifying the type of data and the value specifying the value of the attribute for a particular instance. Object data documents may be implemented in a variety of language independent data formats, such as such as JavaScript Object Notation (JSON), Extensible Markup Language (XML), and YAML™, to name a few. Object data documents are supported by many programming languages and often used to transport or transmit data objects between applications and computer systems.
The object data documents can be stored in a relational database (RDBS) to take advantage of ACID (atomic, consistent, isolated, and durable) principles during data modification, to take advantage of backup and restore operations, high availability features, and disaster recovery features provided by the database. The logical data model, which represents all the classes in the object model, is normalized in an RDBS implementation into a physical model which persists the instance object data in different tables and their corresponding attribute values in columns.
A limitation of this approach is that the object data documents, i.e., the application's objects, are decomposed into columns and are not persisted in their entirety. This limits the advantages for which object data documents are used, e.g., to transport whole objects amongst the different modules of an application or between the modules of different applications avoiding the decomposition into table-columns upon insert/update into the RDBS and construction of the object data document from table-columns upon data retrieval from the RDBS.